package main

import (
	"fmt"
	"gitee.com/ymofen/golog"
	"github.com/nacos-group/nacos-sdk-go/v2/clients"
	"github.com/nacos-group/nacos-sdk-go/v2/common/constant"
	"github.com/nacos-group/nacos-sdk-go/v2/vo"
	"os"
)

func main() {
	// 创建日志目录
	os.MkdirAll("./logs/nacos", 0755)
	os.MkdirAll("./cache/nacos", 0755)

	/* ---------- 1. 服务端连接信息 ---------- */
	serverCfg := []constant.ServerConfig{
		{
			IpAddr: "58.49.94.131",
			Port:   18351,
		},
	}

	/* ---------- 2. 客户端自身信息 ---------- */
	clientCfg := constant.ClientConfig{
		NamespaceId:         "", // 与 URL 中的 namespaceId=public 对应
		TimeoutMs:           5 * 1000,
		NotLoadCacheAtStart: true, // 关键 1：启动时不读缓存
		LogDir:              "./logs/nacos",
		CacheDir:            "./cache/nacos",
	}

	/* ---------- 3. 创建配置客户端 ---------- */
	configClient, err := clients.CreateConfigClient(map[string]interface{}{
		"serverConfigs": serverCfg,
		"clientConfig":  clientCfg,
	})
	if err != nil {
		golog.Warnf(err.Error())
		return
	}

	/* ---------- 4. 拉取配置 ---------- */
	content, err := configClient.GetConfig(vo.ConfigParam{
		DataId: "yangmf",
		Group:  "",
	})
	if err != nil {
		golog.Warnf(err.Error())
		return
	}

	fmt.Println("----- 成功拿到配置 -----")
	fmt.Println(content)

	/* ---------- 5. （可选）监听变更 ---------- */
	err = configClient.ListenConfig(vo.ConfigParam{
		DataId: "yangmf",
		Group:  "",
		OnChange: func(namespace, group, dataId, data string) {
			fmt.Println("配置发生变更:")
			fmt.Println(data)
		},
	})
	if err != nil {
		panic(err)
	}

	// 阻塞主协程，方便观察监听效果
	select {}
}
